// backend/main.go
package main

import (
	"fmt"
	"net/http"

	_ "github.com/go-sql-driver/mysql"
	"github.com/go-xorm/xorm"
)

func main() {
	// 1. 初始化XORM引擎（连接MySQL）
	engine, err := xorm.NewEngine("mysql", GetDBConnStr())
	if err != nil {
		fmt.Printf("MySQL连接失败: %v\n", err)
		return
	}
	defer engine.Close()

	// 测试数据库连接
	if err := engine.Ping(); err != nil {
		fmt.Printf("MySQL ping失败: %v\n", err)
		return
	}
	fmt.Println("MySQL连接成功")

	// 2. 初始化数据库表
	if err := InitTables(engine); err != nil {
		fmt.Printf("初始化表结构失败: %v\n", err)
		return
	}
	fmt.Println("数据库表初始化完成")

	// 3. 创建日志通道（缓冲大小从配置读取）
	logChan := make(chan TrafficLog, Config.LogChanSize)

	// 4. 启动日志生成器（协程）
	fmt.Printf("启动日志生成器，共生成%d条日志，%d个协程\n", Config.GenLogNum, Config.GenGoroutineNum)
	go StartLogGenerator(logChan)

	// 5. 启动日志消费者（协程）
	fmt.Println("启动日志消费者")
	go StartLogConsumer(engine, logChan)

	// 6. 启动统计服务（协程）
	go StartStatsService(engine)

	// 7. 初始化HTTP接口并启动服务
	InitHTTPHandler(engine)
	if err := http.ListenAndServe(":8080", nil); err != nil {
		fmt.Printf("HTTP服务启动失败: %v\n", err)
	}
}
